package cn.iocoder.yudao.module.jikong.service.jkOrder;

import java.util.*;
import javax.validation.*;

import cn.hutool.json.JSONObject;
import cn.iocoder.yudao.module.jikong.controller.admin.jkOrder.vo.*;
import cn.iocoder.yudao.module.jikong.dal.dataobject.jkOrder.JkOrderDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 单据 Service 接口
 *
 * @author xc
 */
public interface JkOrderService {

    /**
     * 创建单据
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createJkOrder(@Valid JkOrderSaveReqVO createReqVO);

    /**
     * 更新单据
     *
     * @param updateReqVO 更新信息
     */
    void updateJkOrder(@Valid JkOrderSaveReqVO updateReqVO);

    /**
     * 删除单据
     *
     * @param id 编号
     */
    void deleteJkOrder(Long id);

    /**
    * 批量删除单据
    *
    * @param ids 编号
    */
    void deleteJkOrderListByIds(List<Long> ids);

    /**
     * 获得单据
     *
     * @param id 编号
     * @return 单据
     */
    JkOrderDO getJkOrder(Long id);

    /**
     * 获得单据分页
     *
     * @param pageReqVO 分页查询
     * @return 单据分页
     */
    PageResult<JkOrderDO> getJkOrderPage(JkOrderPageReqVO pageReqVO);

    PageResult<JkOrderDO> getJkOrderPageExpert(JkOrderPageReqVO pageReqVO);


    List<JSONObject> statusCount();

}
